/*
 * 文  件   名: MessageDao.java
 * 版         本: docrepository-core(Anttribe). All rights reserved
 * 描         述: <描述>
 * 修   改  人: zhaoyong
 * 修改时 间: 2014年11月24日
 */
package org.anttribe.docrepository.message.dao;

import java.util.List;
import java.util.Map;

import org.anttribe.docrepository.message.domain.Message;
import org.anttribe.docrepository.user.domain.UserInfo;
import org.anttribe.saturn.runtime.dao.BaseDao;

/**
 * @author zhaoyong
 * @version 2014年11月24日
 */
public interface MessageDao extends BaseDao<Message>
{
    /**
     * MAPPING_QUERYBYCRITERIA
     */
    String MAPPING_QUERYBYCRITERIA = "Message.queryByCriteria";
    
    /**
     * MAPPING_QUERYMESSAGEUSER
     */
    String MAPPING_QUERYMESSAGEUSER = "Message.queryMessageUser";
    
    /**
     * MAPPING_QUERYMESSAGECOUNT
     */
    String MAPPING_QUERYMESSAGECOUNT = "Message.queryMessageCount";
    
    /**
     * 根据条件查询Message数据
     * 
     * @param criteria Map<String, Object>
     * @return List<Message>
     */
    List<Message> queryByCriteria(Map<String, Object> criteria);
    
    /**
     * 根据用户id获取与该用户有私信联系的用户信息
     * 
     * @param userId String
     * @return List<UserInfo>
     */
    List<UserInfo> queryMessageUser(String userId);
    
    /**
     * 根据接收人获取所有已读或未读的消息
     * 
     * @param hasread Boolean
     * @param receiverId String
     * @return List<Map<String, Object>> key:senderId，value:count
     */
    List<Map<String, Object>> queryMessageCount(String receiverId, Boolean hasread);
}